package LinerSearch;

/**
 * @ClassName: LinerSearch
 * @Description: 查找线性数据结构中的目标值的索引值.泛型只可以是类对象,不可以是基本数据类型,所以Java
 * 对八个数据类型定义了八个包装类
 * @Author: LiangPengFei
 * @Date: 2021/1/3 23:44
 * @Version: 1.0
 **/
public class LinerSearch {

    //    使用私有属性,类外不可创建对象
    private LinerSearch(){}
//    使用静态方法,类外不需要创建对象即可调用
    public static <E> int search(E[] data , E target){
//        循环体:维持循环不变量  循环不变量:data[0...i-1]没有找到
        for (int i = 0;i<data.length;i++)
//            equals默认比较两个类对象的地址,需要在自己定义的类中重写equals
            if (data[i].equals(target))
                return i;
        return -1;
    }

    public static void main(String[] args) {
//        Integer[] data = {2,45,6,5,8,78,2,23};
        Integer[] data = ArrayGenerator.generateOrderedArray(1000000);
        Integer target = 1000000;
        long startTime = System.nanoTime();
        Integer result = LinerSearch.search(data,target);
        long endTime = System.nanoTime();

        double time = (endTime-startTime)/1000000000.0;
        System.out.println(result);
        System.out.println(time+"s");
    }
}
